package br.com.virtual.cadastrar.service.impl;

import java.util.List;

import javax.ejb.Local;
import javax.ejb.Stateless;
import javax.inject.Inject;

import br.com.virtual.base.enums.TipoEnderecoEnum;
import br.com.virtual.base.exceptions.VirtualValidationException;
import br.com.virtual.cadastrar.dao.EnderecoDAO;
import br.com.virtual.cadastrar.model.Endereco;
import br.com.virtual.cadastrar.model.Pessoa;
import br.com.virtual.cadastrar.service.EnderecoService;

@Stateless
@Local(EnderecoService.class)
public class EnderecoServiceImpl implements EnderecoService {

	@Inject
	private EnderecoDAO enderecoDAO;

	@Override
	public Endereco create(Endereco endereco) throws VirtualValidationException {

		return enderecoDAO.create(createAlias(endereco));
	}

	@Override
	public Endereco read(Long id) {
		return enderecoDAO.read(id);
	}

	@Override
	public void update(Endereco endereco) throws VirtualValidationException {
		enderecoDAO.update(createAlias(endereco));
	}

	@Override
	public void delete(Endereco endereco) throws VirtualValidationException {
		enderecoDAO.delete(endereco);
	}

	@Override
	public List<Endereco> getList(Pessoa pessoa) {

		return enderecoDAO.getList(pessoa);
	}

	private Endereco createAlias(Endereco endereco) {

		if (endereco.getAlias().isEmpty())
			endereco.setAlias(endereco.getTipoEndereco().getNome());

		return endereco;
	}

	@Override
	public Endereco getEnderecoByTipo(Pessoa pessoa, TipoEnderecoEnum tipoEndereco) {

		
		return this.enderecoDAO.getEnderecoByTipo(pessoa, tipoEndereco);
	}

}
